/**
 * 状态常量定义
 * 统一管理前端常用的状态字符串，避免硬编码
 * 
 * @author Wu.Liang
 * @date 2025-01-30
 */

// ==================== 通用状态 ====================

/**
 * 通用状态常量
 */
export const STATUS = {
  // 启用/禁用状态
  ENABLED: '启用',
  DISABLED: '禁用',
  
  // 审核状态
  PENDING: '待审核',
  APPROVED: '审核通过',
  REJECTED: '审核拒绝',
  
  // 锁定状态
  LOCKED: '锁定',
  UNLOCKED: '解锁',
  
  // 删除状态
  DELETED: '已删除',
  NOT_DELETED: '未删除'
} as const

// ==================== 用户状态 ====================

/**
 * 用户状态常量
 */
export const USER_STATUS = {
  // 用户状态
  ENABLED: '启用',
  DISABLED: '禁用',
  LOCKED: '锁定',
  
  // 审核状态
  PENDING: '待审核',
  APPROVED: '审核通过',
  REJECTED: '审核拒绝',
  
  // 用户类型
  RESIDENT: '居民',
  PROPERTY: '物业',
  ADMIN: '管理员',
  SECURITY: '安保',
  MAINTENANCE: '维修',
  OTHER: '其他'
} as const

// ==================== 性别状态 ====================

/**
 * 性别状态常量
 */
export const GENDER_STATUS = {
  UNKNOWN: '未知',
  MALE: '男',
  FEMALE: '女'
} as const

// ==================== 优先级状态 ====================

/**
 * 优先级状态常量
 */
export const PRIORITY_STATUS = {
  HIGH: '高',
  MEDIUM: '中',
  LOW: '低'
} as const

// ==================== 紧急程度状态 ====================

/**
 * 紧急程度状态常量
 */
export const URGENCY_STATUS = {
  URGENT: '紧急',
  NORMAL: '一般',
  LOW: '不紧急'
} as const

// ==================== 工具函数 ====================

/**
 * 获取状态常量
 * @param category 状态类别
 * @param key 状态键
 * @returns 状态内容
 */
export function getStatus(category: keyof typeof STATUS | keyof typeof USER_STATUS | keyof typeof GENDER_STATUS | keyof typeof PRIORITY_STATUS | keyof typeof URGENCY_STATUS, key: string): string {
  const statusMap = {
    ...STATUS,
    ...USER_STATUS,
    ...GENDER_STATUS,
    ...PRIORITY_STATUS,
    ...URGENCY_STATUS
  }
  
  return statusMap[key as keyof typeof statusMap] || '未知状态'
}

/**
 * 获取通用状态
 * @param key 状态键
 * @returns 状态内容
 */
export function getCommonStatus(key: keyof typeof STATUS): string {
  return STATUS[key]
}

/**
 * 获取用户状态
 * @param key 状态键
 * @returns 状态内容
 */
export function getUserStatus(key: keyof typeof USER_STATUS): string {
  return USER_STATUS[key]
}

/**
 * 获取性别状态
 * @param key 状态键
 * @returns 状态内容
 */
export function getGenderStatus(key: keyof typeof GENDER_STATUS): string {
  return GENDER_STATUS[key]
}

/**
 * 获取优先级状态
 * @param key 状态键
 * @returns 状态内容
 */
export function getPriorityStatus(key: keyof typeof PRIORITY_STATUS): string {
  return PRIORITY_STATUS[key]
}

/**
 * 获取紧急程度状态
 * @param key 状态键
 * @returns 状态内容
 */
export function getUrgencyStatus(key: keyof typeof URGENCY_STATUS): string {
  return URGENCY_STATUS[key];
} 